// @/common/graceChecker.js
export default {
  error: '', // 存储错误信息

  /**
   * 简单表单验证
   * @param {Object} data - 表单数据（键值对）
   * @param {Array} rules - 验证规则
   * @return {Boolean} 验证是否通过
   */
  check(data, rules) {
    // 遍历所有验证规则
    for (const rule of rules) {
      const { name, checkType, checkRule, errorMsg } = rule;
      const value = data[name]; // 获取当前字段值

      // 1. 非空验证（必填项）
      if (checkType === 'notnull') {
        // 空值或空数组都视为未填写
        if (!value || (Array.isArray(value) && value.length === 0)) {
          this.error = errorMsg;
          return false;
        }
      }

      // 2. 字符串长度验证（如：1-3个字符）
      else if (checkType === 'string') {
        const [min, max] = checkRule.split(',').map(Number);
        if (value.length < min || value.length > max) {
          this.error = errorMsg;
          return false;
        }
      }

      // 3. 枚举值验证（只能选指定选项）
      else if (checkType === 'in') {
        const options = checkRule.split(',');
        if (!options.includes(value)) {
          this.error = errorMsg;
          return false;
        }
      }
    }

    // 所有规则验证通过
    return true;
  }
};